/*
 * TacticaDefensa.java
 *
 * Created on 16 de marzo de 2007, 14:29
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package futbol.tacticas.concursantes2007.FCDEFENSIVO;

import futbol.tacticas.concursantes.Tactica;

import java.awt.*;
import java.util.Vector;
import futbol.tacticas.*;
//import java.math.*;

/**
 *
 * @author carlos.botella
 */
public class TacticaDefensa implements Tactica{
        
    private int nValores[][]=
    {
        {-150,-28,7}, //Defensa - 1
        {-150,-9,7}, //Defensa - 2
        {-150,9,7}, //Defensa - 3
        {-150,28,7}, //Defensa - 4
        {-60,-80,5}, //Medio-escoba - 5
        {-60,-20,5}, //Medio - 6
        {-60,20,5}, //Medio - 7
        {-60,80,5}, //Medio-escoba - 8
        {110,-60,6}, //Delantero derecho - 9
        {120,0,6}, //Delantero centro - 10
        {110,60,6}, //Delantero izquierdo - 11
                   
    };

    /** Creates a new instance of TacticaPrimera */
    public TacticaDefensa() {
    }
    
    public Color getColor1()
    {
        return Color.GREEN;
    }
    public Color getColor2()
    {
        return Color.WHITE;
    }
    public Color getColorNumero()
    {
        return Color.WHITE;
    }
    
    public String getNombre()
    {
        return "FC DEFENSIVO";
    }
    public int getXInicial(int n)
    {
        return nValores[n][0];
    }
    public int getYInicial(int n)
    {
        return nValores[n][1];
    }
    public int getFuerza(int n)
    {
        return nValores[n][2];
    }
    public Vector<Comando> getComandos(SituacionJugadores sj) {
        Vector<Comando> com=new Vector();
        
        Point miequipo[] = sj.getMisJugadores();
        Point bola = sj.getBola();
        
        //Defensas
        for( int i = 0; i < 4; i++ )
        {
            if( (miequipo[i].getX() - bola.getX() < 20 ) && (miequipo[i].getX() - bola.getX() > -20 ) && (miequipo[i].getY() - bola.getY() < 20 ) && (miequipo[i].getY() - bola.getY() > -20 ) ) 
            {
                //Despejar la pelota
                if( bola.getY() < 0 )
                    com.add(new ComandoTiroAPuerta(i,-10));
                else
                    com.add(new ComandoTiroAPuerta(i,10));
            }
        }
                
        //Ataque
        int nJug=sj.getMasCercanoDeBola();
        if( nJug > 3 )
        {
            //El delantero centro se queda en el area
            if( nJug != 9 || bola.getX() > 100)
                com.add(new ComandoIrA(nJug,bola.getX(), bola.getY()));
            else
                com.add(new ComandoIrA(9,100, 0));
        }
        else
        {
            //Medios-escoba
            if( bola.getY() < 0 )
                com.add(new ComandoIrA(4,bola.getX(), bola.getY()));
            else
                com.add(new ComandoIrA(7,bola.getX(), bola.getY()));
                
        }
        
        //Disparo
        for( int j = 4; j < 11; j++ )
        {
            if( (miequipo[j].getX() - bola.getX() < 20 ) && (miequipo[j].getX() - bola.getX() > -20 ) && (miequipo[j].getY() - bola.getY() < 20 ) && (miequipo[j].getY() - bola.getY() > -20 ) ) 
            {
                int kDisparo = 10;
                if(j == 9)
                {
                    kDisparo = 20;
                    if( bola.getY() < 0 )
                        com.add(new ComandoTiroAPuerta(j,(-1) * kDisparo));
                    else
                        com.add(new ComandoTiroAPuerta(j,kDisparo));
                    /**
                     if( bola.getY() < 0 )
                        com.add(new ComandoGolpearBola(j, -30, 160));
                    else
                        com.add(new ComandoGolpearBola(j, 30, 160));
                     **/
                }
                else
                {
                    if( bola.getY() < 0 )
                        com.add(new ComandoTiroAPuerta(j,(-1) * kDisparo));
                    else
                        com.add(new ComandoTiroAPuerta(j,kDisparo));
                }
            }
        }
        
        return com;
    }
}
